// pages/register/register.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    username: '', //用户名称
    nickname: '',
    password: '', //密码
    confirmpassword: '', //确认密码
    code: '', //验证码
    captchaImg: '', //验证码图片
    loading: false, //注册按钮加载状态
    baseUrl: '',
    userId: '',
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    //加载的时候获取验证码
    this.getCaptcha();
    const app = getApp();
    this.baseUrl = app.baseUrl;
  },

  // 获取验证码
  getCaptcha: function () {
    wx.request({
      url: 'http://localhost/dev-api/captchaImage',
      method: 'GET',
      success: (res) => {
        console.log('验证码获取成功:', res.data);
        if (res.data && res.data.code === 200) {
          this.setData({
            captchaImg: res.data.img,
            uuid: res.data.uuid,
            captchaEnabled: res.data.captchaEnabled,
            // 重置验证码输入
            code: ''
          });
        } else {
          wx.showToast({
            title: '获取验证码失败',
            icon: 'none'
          });
        }
      },
      fail: (err) => {
        console.error('获取验证码请求失败:', err);
        wx.showToast({
          title: '网络异常，请重试',
          icon: 'none'
        });
      }
    });
  },
  // 刷新验证码
  refreshCaptcha: function () {
    this.getCaptcha();
  },
  /**
   * 输入用户名
   */
  inputUsername: function (e) {
    this.setData({
      username: e.detail.value
    });
  },
  //输入昵称
  inputNickname: function (e) {
    this.setData({
      nickname: e.detail.value
    });
  },

  /**
   * 输入密码
   */
  inputPassword: function (e) {
    this.setData({
      password: e.detail.value
    });
  },

  /**
   * 输入确认密码
   */
  inputConfirmPassword: function (e) {
    this.setData({
      confirmPassword: e.detail.value
    });
  },

  /**
   * 输入验证码
   */
  inputCode: function (e) {
    this.setData({
      code: e.detail.value
    });
  },

  /**
   * 注册方法
   */
  register: function () {
    // 从this.data中获取数据
    const username = this.data.username;
    const password = this.data.password;
    const nickname = this.data.nickname;
    const confirmPassword = this.data.confirmPassword;
    const code = this.data.code;
    const uuid = this.data.uuid;

    // 表单验证
    if (!username.trim()) {
      wx.showToast({
        title: '请输入用户名',
        icon: 'none'
      });
      return;
    }
    if (!nickname.trim()) {
      wx.showToast({
        title: '请输入昵称',
        icon: 'none'
      });
      return;
    }
    if (!password.trim()) {
      wx.showToast({
        title: '请输入密码',
        icon: 'none'
      });
      return;
    }
    if (!confirmPassword.trim()) {
      wx.showToast({
        title: '请确认密码',
        icon: 'none'
      });
      return;
    }
    if (password !== confirmPassword) {
      wx.showToast({
        title: '两次密码输入不一致',
        icon: 'none'
      });
      return;
    }
    if (!code.trim()) {
      wx.showToast({
        title: '请输入验证码',
        icon: 'none'
      });
      return;
    }
    // 确保uuid存在
    if (!uuid) {
      wx.showToast({
        title: '验证码已失效，请刷新',
        icon: 'none'
      });
      this.getCaptcha(); // 刷新验证码
      return;
    }

    // 显示注册中状态
    this.setData({
      loading: true
    });
    // 构建注册请求体
    const registerBody = {
      userName: username,
      password: password,
      nickName: nickname,
      code: code
    };

    // 调用注册接口
    wx.request({
      url: 'http://localhost:8080/system/user/register',
      method: 'POST',
      header: {
        'content-type': 'application/json'
      },
      data: registerBody,
      success: (res) => {
        console.log('注册响应:', res.data);

        // 检查响应数据是否存在
        if (!res || !res.data) {
          wx.showToast({
            title: '服务器响应异常',
            icon: 'none'
          });
          this.getCaptcha(); // 刷新验证码
          return;
        }

        // 注册成功处理
        if (res.data.code === 200) {
          // 提示注册成功
          wx.showToast({
            title: '注册成功',
            icon: 'success'
          }, );
          // 查询注册用户的id并授权角色
          this.assignRoleAfterRegister(username)

          // 延迟跳转到登录页面
          setTimeout(() => {
            wx.navigateTo({
              url: '/pages/login/login'
            });
          }, 1500);
        } else {
          // 注册失败处理
          wx.showToast({
            title: res.data.msg || '注册失败，请重试',
            icon: 'none'
          });
          // 刷新验证码
          this.getCaptcha();
        }
      },
      fail: (err) => {
        // 请求失败处理
        console.error('注册请求失败:', err);
        wx.showToast({
          title: '网络异常，请重试',
          icon: 'none'
        });
        // 刷新验证码
        this.getCaptcha();
      },
      complete: () => {
        // 无论成功失败，都取消加载状态
        this.setData({
          loading: false
        });
      }
    });
  },
  /**
   * 跳转到登录页面
   */
  toLogin: function () {
    wx.navigateTo({
      url: '/pages/login/login'
    });
  },
  // 新增方法：注册成功后分配角色
assignRoleAfterRegister: function (username) {
  // 查询用户ID
  wx.request({
    url: `http://localhost:8080/system/user/login/${username}`,
    method: 'GET',
    header: {
      'content-type': 'application/json'
    },
    success: (res) => {
      console.log('查询用户信息响应:', res.data);

      if (res.data && res.data.code === 200) {
        // ✅ 正确获取用户ID，假设返回的数据结构是 { code: 200, data: { userId: 1 } }
        const userId = res.data.data.userId; 
        console.log('111查询到的用户ID:', userId);

        if (userId) {
          console.log('✅ 获取到的用户ID是:', userId);

          // ✅ 正确：使用局部变量 userId，而不是 this.data.userId
          const roleBody = {
            userId: userId,  // ✅
            roleId: 100        // ✅ 角色ID，通常是数字
          };

          // 调用接口给这个用户授权角色
          wx.request({
            url: 'http://localhost:8080/system/user/roleAuth', // 或者 /system/user/authRole，请与后端确认
            method: 'POST', // 或者 PUT，根据后端要求
            data: roleBody,
            header: {
              'content-type': 'application/json'
            },
            success: (response) => {
              console.log('角色授权响应:', response.data);
              if (response.data && response.data.code === 200) {
                console.log('✅ 角色授权成功');
              } else {
                console.log('❌ 角色授权失败', response.data ? response.data.msg : '未知错误');
                wx.showToast({
                  title: '角色授权失败',
                  icon: 'none'
                });
              }
            },
            fail: (err) => {
              console.error('❌ 角色授权请求失败:', err);
              wx.showToast({
                title: '角色授权请求失败',
                icon: 'none'
              });
            }
          });
        } else {
          console.log('❌ 未获取到有效的用户ID');
          wx.showToast({
            title: '未获取到用户ID',
            icon: 'none'
          });
        }
      } else {
        console.log('❌ 查询用户信息失败', res.data ? res.data.msg : '未知错误');
        wx.showToast({
          title: '查询用户信息失败',
          icon: 'none'
        });
      }
    },
    fail: (err) => {
      console.error('❌ 查询用户信息请求失败:', err);
      wx.showToast({
        title: '查询用户信息请求失败',
        icon: 'none'
      });
    }
  });
},
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})